home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-04-18 | 65.8 KB | 2,113 lines |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx -- tthhee ddaattaabbaassee ccaacchheedd mmaannuuaall ppaaggeerr ssuuiittee
-
-
- _G_r_a_e_m_e _W_. _W_i_l_f_o_r_d _<_e_e_p_2_g_w_@_e_e_._s_u_r_r_e_y_._a_c_._u_k_>
-
-
-
-
-
-
- This document describes the setup, maintenance and
- use of a generic online manual page system with spe-
- cial reference to man_db-2.3.x and it's advanced
- features.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- UUNNIIXX is a registered trademark of the X/Open Company, Ltd.
- NFS is a registered trademark of Sun Microsystems, Inc.
- PostScript is a registered trademark of Adobe in the United
- States.
-
- The general conventions used throughout this manual include
-
- +o file names and paths in _i_t_a_l_i_c, eg. _/_u_s_r_/_m_a_n.
- +o variable strings (usually path components) enclosed
- within <> and in _i_t_a_l_i_c, eg. _<_s_e_c_>,
- +o program names in bboolldd, eg. mmaann. _____
- +o comman_d_s__t_h_a_t__c_a_n_ be typed at a shell prompt in a |_b_o_x_|_,
- eg. |_m_a_n__f_o_o_b_a_r_|_.
- +o environment variables denoted as follows: $EENNVV__VVAARR
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Copyright (C) 1995 Graeme W. Wilford
-
- Permission is granted to make and distribute verbatim copies
- of this manual provided the copyright notice and this per-
- mission notice are preserved on all copies.
-
- Permission is granted to copy and distribute modified ver-
- sions of this manual under the conditions for verbatim copy-
- ing, provided that the entire resulting derived work is dis-
- tributed under the terms of a notice identical to this one.
-
- Permission is granted to copy and distribute translations of
- this manual into another language, under the above condi-
- tions for modified versions, except that this permission no-
- tice may be stated in a translation approved by the copy-
- right holder.
-
-
-
-
-
-
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 11.. IInnttrroodduuccttiioonn
-
- 11..11.. mmaann__ddbb--22..33..xx
-
- man_db-2.3.x is a package that is designed to provide users
- with online information in a fast and friendly manner while
- at the same time offering flexibility to the system adminis-
- trator.
-
- It is made up of several user programs:
- ++oo mmaann - an interface to the on-line reference manuals
- ++oo wwhhaattiiss - search the manual page names
- ++oo aapprrooppooss - search the manual page names and descriptions
- ++oo mmaannppaatthh - determine search path for manual pages
- several maintenance programs:
- ++oo mmaannddbb - create or update the manual page index caches
- ++oo ccaattmmaann - create or update the pre-formatted manual pages
- and a special pre-formatter that knows about compressed manual pages
- ++oo zzssooeelliimm - satisfy .so requests in roff input
-
-
- In addition to these compiled programs, there are two shell
- scripts, mmkkccaattddiirrss and cchheecckkmmaann in the _t_o_o_l_s subdirectory.
- These scripts aid the creation of cat directories and check
- for duplicated manual pages, respectively.
-
- The following manual pages are provided with this package to
- explain correct format and usage. mmaann(1), wwhhaattiiss(1), aapprroo--
- ppooss(1), mmaannppaatthh(1), mmaannppaatthh(5), mmaannddbb(8), ccaattmmaann(8) and
- zzssooeelliimm(1).
-
- 11..11..11.. TThhee ccoonncceepptt
-
- man_db-2.3.x originally started out life as program suite
- man-1.1B, written by John W. Eaton <jwe@che.utexas.edu> and
- maintained by Rik Faith <faith@cs.unc.edu> to which support
- proposed by the newly formed FFSSSSTTNNDD committee regarding cat
- directories was added.
-
- Since then, man_db-2.3.x's most innovative feature: the
- database cache scheme1 has been significantly developed. The
- basic idea was to reduce manual page search times to a mini-
- mum. The following piece of text is included from the
- man_db-2.2 distribution:
-
- The theory: If you go to a library to take a book
- out, what do you do?
- ____________________
- 1 originally conceived after observing the actions of the
- perl based manual pager suite, man-pl written by Tom Chris-
- tiansen <tchrist@convex.com>
-
-
-
-
- 11
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- a) Go and look where it might be on a micro-
- fiche/terminal, take a look
- where it is supposed to be on the shelf, and then
- go look at the new
- arrivals if it's not where it's supposed to be?
-
- OR
-
- b) Start at one end of the ground floor, look along
- every bookshelf
- until you've completed that floor, then go up a
- level and start again
- until you've found what you're looking for?
-
-
- Since then the database iinnddeexx scheme has evolved greatly.
- Every manual page and stray cat page on the system is regis-
- tered in an iinnddeexx database cache which stores various
- details about the file including the timestamp, the location
- and the whatis2 information. This information is kept up to
- date by mmaann which looks for filesystem changes each time it
- is invoked.
-
- 11..22.. TThhee mmaannuuaall ppaaggee ssyysstteemm
-
- The simplest manual page system will have a single manual
- page hierarchy. This will typically be
-
- _/_u_s_r_/_m_a_n
-
- beneath which will be several subdirectories of the form
- _m_a_n_<_s_e_c_> where _<_s_e_c_> is 11, 22, 33, 44, 55, 66, 77 or 88. These are
- referred to as _s_e_c_t_i_o_n_s of the manual. Others may exist and
- they are not restricted to single character names. eg.
-
- _/_u_s_r_/_m_a_n_/_m_a_n_f_o_o
-
- is a valid section subdirectory. Other common sections
- include 99, nn, ll, pp and oo.
-
- Within these section subdirectories reside the manual pages
- themselves. Their filenames follow the pattern
-
- _/_u_s_r_/_m_a_n_/_m_a_n_<_s_e_c_>_/_<_n_a_m_e_>_._<_s_e_c_>_<_e_x_t_>
-
- where in most cases _<_e_x_t_> is an empty string. An example is
- manual page ccpp
-
-
- ____________________
- 2 one line description of the manual page
-
-
-
-
- 22
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- _/_u_s_r_/_m_a_n_/_m_a_n_1_/_c_p_._1
-
- which resides in _s_e_c_t_i_o_n 11 and has no special _e_x_t_e_n_s_i_o_n.
-
- 11..33.. SSeeccttiioonnss ooff tthhee mmaannuuaall
-
- The manual is split up into sections to ease access and to
- cater for manual pages that share the same name. It is com-
- mon for a program and function to share the same name. kkiillll
- is a good example. This is both a program which can be used
- to send a process a signal and an operating system call with
- similar functionality. Their manual pages are stored under
- sections 11 and 22 respectively. Thus, sections are used to
- separate out the program manual pages from the function man-
- ual pages and so on. The table below shows the _s_e_c_t_i_o_n num-
- bers of the manual followed by the types of pages they con-
- tain.
-
-
- +--------+------------------------------------------------------+
- |Section | Section contents |
- +--------+------------------------------------------------------+
- | 1 | user executable programs or shell commands |
- | 2 | system calls (functions provided by the kernel) |
- | 3 | library calls (functions within system libraries) |
- | 4 | special files (usually found in _/_d_e_v) |
- | 5 | file formats and conventions eg. _/_e_t_c_/_p_a_s_s_w_d |
- | 6 | games |
- | 7 | macro packages and conventions eg. mmaann(7), ggrrooffff(7). |
- | 8 | system administration commands |
- | 9 | kernel routines [Non standard] |
- | n | new [obsolete] |
- | l | local [obsolete] |
- | p | public [obsolete] |
- | o | old [obsolete] |
- +--------+------------------------------------------------------+
-
-
- 11..44.. TThhee ffoorrmmaatt ooff mmaannuuaall ppaaggeess
-
- The format in which manual pages are stored is NNRROOFFFF/TTRROOFFFF
- or more generally ROFF. This is a typesetter style
- language3 which requires formatting before being viewed. In
- fact some manual pages require pre-format processing to cor-
- rectly format tables or equations.
-
- If the page is to be viewed on screen in a text environment,
- NNRROOFFFF is used as the primary formatter. If the page is to be
- printed or displayed in a graphical environment, TTRROOFFFF is
- ____________________
- 3 similar in some aspects to TTeeXX
-
-
-
-
- 33
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- used. Traditionally, TTRROOFFFF formatted files for a CC//AA//TT (Com-
- puter aided Typesetter) which is now obsolete.
-
- The GGNNUU ROFF (GGRROOFFFF4) suite of programs offer a choice of
- output types including XX, ddvvii and ppoossttssccrriipptt. When config-
- uring man_db-2.3.x, the preference is to use GGRROOFFFF rather
- than TTRROOFFFF.
-
- 11..55.. AArrgguummeennttss ttoo ccoonnffiigguurree
-
- To allow the configuration program, ccoonnffiigguurree, to be non-
- interactive, it can be passed various options to alter the
- default settings. Generic ccoonnffiigguurree options are discussed
- in _d_o_c_s_/_I_N_S_T_A_L_L. Options that are specific to the
- man_db-2.3.x package are described below.
-
- --enable-debug
- By default, the configuration process creates produc-
- tion quality Makefiles. This option, which takes no
- argument, changes certain values to aid in debugging
- man_db-2.3.x. It does not alter the physical behaviour
- of any of the programs.
-
- --enable-setuid[=ARG]
- By default, mmaann will be installed as a setuid program
- to user man. Use this option with an argument to change
- the setuid owner.
-
- --disable-setuid
- Use this option to install mmaann as a non-setuid program
- and to change the default cat and database files'
- access flags to allow users to modify them.
-
- --with-device=DEVICE
- Use this flag to alter the default output device used
- by NNRROOFFFF. DEVICE is passed to NNRROOFFFF with the -T option.
- ccoonnffiigguurree will test that NNRROOFFFF will run with the sup-
- plied device argument.
-
- --with-db=LIBRARY
- configure will look for database interface libraries in
- the order Berkeley DB, gdbm and finally ndbm and will
- #define appropriate variables relative to the first one
- found. To override the built in order on platforms hav-
- ing a choice of interface library, use this option to
- specify which library to use.
-
-
-
- ____________________
- 4 Written and maintained by James Clark <jjc@jclark.com>
-
-
-
-
- 44
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 22.. TThhee ssppeecciiffiiccss ooff SSeeccttiioonnss
-
- 22..11.. PPaacckkaaggee ssppeecciiffiicc mmaannuuaall ppaaggee sseeccttiioonnss
-
- The use of package specific manual page sections is discour-
- aged as packages large enough to warrant their own section
- probably contain manual pages that span other sections. An
- example might be package ffoooo that has it's own section
-
- _/_u_s_r_/_m_a_n_/_m_a_n_f_o_o
-
- which contains manual pages describing it's programs, the
- library routines it offers and the format of several of its
- configuration files. These pages would normally be allocated
- to sections 11, 33 and 55 respectively and thus combining them
- all under section ffoooo is misleading. Subtle problems will
- arise if there are any base name-space clashes with standard
- manual pages, eg. eexxiitt(3), eexxiitt(foo) and the order in which
- they should be shown.
-
- There are two standard solutions to this problem.
-
- (1) Create a separate manual page hierarchy for the pack-
- age's manual pages such as
-
- _/_u_s_r_/_l_o_c_a_l_/_p_a_c_k_a_g_e_s_/_f_o_o_/_m_a_n
-
-
- (2) Install the pages in their relevant sections, with a
- unique extension appended to the filename such that
-
- _/_u_s_r_/_m_a_n_/_m_a_n_f_o_o_/_e_x_i_t_._f_o_o
-
- would instead be installed as
-
- _/_u_s_r_/_m_a_n_/_m_a_n_1_/_e_x_i_t_._1_f_o_o
-
-
- Only (2) offers a complete solution to manual page ordering
- problems and allows users to access the desired page
- directly.
-
- 22..22.. SSeelleeccttiinngg aa sseeccttiioonn ttyyppee
-
- 22..22..11.. SSppeecciiffyyiinngg aa sseeccttiioonn
-
- This is done via use of the section argument to man
- ____________
- |_m_a_n__1__e_x_i_t_|_
-
- will look for _e_x_i_t_._1_* in section 11 of the manual. If _e_x_i_t_._1
- exists, it will be displayed in preference to _e_x_i_t_._1_f_o_o
-
-
-
- 55
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
- _______________
- |_m_a_n__1_f_o_o__e_x_i_t_|_
-
- will look for _e_x_i_t_._1_f_o_o_* in section 11 of the manual. The
- asterisk (*) represents a wild-card of any type or length,
- including length zero.
-
- For an argument to be interpreted as a section name rather
- than a page name, it must either begin with a digit, or be
- included in the standard section list. The default section
- list is defined in _i_n_c_l_u_d_e_/_m_a_n_c_o_n_f_i_g_._h to be 11, nn, ll, 88, 33,
- 22, 55, 44, 99, 66 and 77. This should be modified in order and
- content to meet the local conventions.
-
- Every subdirectory section name in the entire system must be
- in the list, including sections found in imported manual
- page hierarchies. The order is important because in normal
- operation, mmaann will only display the first manual page it
- finds that meets the search criteria. Using the ----aallll argu-
- ment will cause mmaann to attempt to display all manual pages
- that meet the criteria. See mmaann(1) for further information.
-
- Having an excess of sections listed will not slow mmaann down.
-
- 22..22..22.. SSppeecciiffyyiinngg aann eexxtteennssiioonn
-
- If the section is unknown, but the package extension is, it
- is possible to use the extension argument
- _________________
- |_m_a_n__-_e__f_o_o__e_x_i_t_|_
-
- to search in all sections for manual pages named _e_x_i_t from
- package _f_o_o.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 66
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 33.. FFiilleessyysstteemm ssttrruuccttuurree
-
- 33..11.. MMaannuuaall ppaaggee hhiieerraarrcchhiieess
-
- It is often common for manual page systems to have more than
- one manual page hierarchy. Indeed one of the systems I use
- has the following globally accessible hierarchies
-
- _/_u_s_r_/_m_a_n
- _/_u_s_r_/_l_o_c_a_l_/_m_a_n
- _/_u_s_r_/_l_o_c_a_l_/_t_e_x_/_m_a_n
- _/_u_s_r_/_l_o_c_a_l_/_p_b_m_/_m_a_n
- _/_u_s_r_/_X_1_1_R_6_/_m_a_n
- _/_u_s_r_/_o_p_e_n_w_i_n_/_m_a_n
- _/_u_s_r_/_l_o_c_a_l_/_p_a_c_k_a_g_e_s_/_p_v_m_/_m_a_n
-
- A full system $MMAANNPPAATTHH would be a colon separated list of
- these directories The order is important, and is observed by
- man_db's search algorithms. The order is very much related
- to the users $PPAATTHH environment variable, and should be set
- on a per user basis, or not set at all. If a user's $PPAATTHH
- causes
-
- _/_u_s_r_/_l_o_c_a_l_/_p_a_c_k_a_g_e_s_/_b_i_n_/_f_o_o_b_a_r
-
- to be executed in preference to
-
- _/_u_s_r_/_b_i_n_/_f_o_o_b_a_r,
-
- it is essential that
- ____________
- |_m_a_n__f_o_o_b_a_r_|_
-
- displays the manual page located within
-
- _/_u_s_r_/_l_o_c_a_l_/_p_a_c_k_a_g_e_s_/_m_a_n
-
- rather than within
-
- _/_u_s_r_/_m_a_n
-
- To ensure correct order, the program mmaannppaatthh may be used to
- set the $MMAANNPPAATTHH environment variable. See mmaannppaatthh(1) and
- mmaannppaatthh(5) for details.
-
- 33..22.. SSeettttiinngg tthhee MMAANNPPAATTHH
-
- If using a Bourne style login shell such as bbaasshh, kksshh, or
- zzsshh, the commands
-
- export MANPATH
- MANPATH=`manpath -q`
-
-
-
- 77
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- can be added to $$HHOOMMEE_/_._p_r_o_f_i_l_e
-
- If using a C style login shell such as ccsshh or ttccsshh, the com-
- mands
-
- setenv MANPATH `manpath -q`
-
- can be added to $$HHOOMMEE_/_._l_o_g_i_n
-
- N.B. $PPAATTHH must be set prior to using mmaannppaatthh. The setting
- of $MMAANNPPAATTHH is actually unnecessary as the man_db-2.3.x
- utilities will dynamically determine the manpath if $MMAANNPPAATTHH
- is unset.
-
- 33..33.. OOtthheerr OOSS''ss mmaannuuaall ppaaggeess
-
- It is common to have collections of heterogeneous computer
- systems linked together in a network. In some circumstances5
- it is advantageous to be able to access the manual pages of
- these other systems directly from your system. This feature
- is known as alternate system support. The accepted way to
- setup this support is to NFS mount the respective systems'
- manual page hierarchies under the native manual page hierar-
- chies. An example:
-
-
- +--------+-----------------------+
- |System | Manual page hierarchy |
- +--------+-----------------------+
- |<local> | /usr/man |
- |newOS | /usr/man/newOS |
- |userix | /usr/man/userix |
- |<local> | /usr/local/man |
- |newOS | /usr/local/man/newOS |
- |userix | /usr/local/man/userix |
- +--------+-----------------------+
-
- Rather than have multiple NFS mounts from a single machine,
- this may be accomplished by NFS mounting
-
- _<_o_t_h_e_r_-_s_y_s_>_:_/_u_s_r
-
- somewhere on the local system and using symbolic links
- within the manual hierarchies. To access these _a_l_t_e_r_n_a_t_e
- _s_y_s_t_e_m_s using mmaann use the --mm option, eg.
- __________________________________________
- |_m_a_n__-_-_a_l_l__-_-_s_y_s_t_e_m__u_s_e_r_i_x_:_n_e_w_O_S__5__p_a_s_s_w_d_|_
-
-
- ____________________
- 5 writing portable software instantly comes to mind
-
-
-
-
- 88
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- would provide manual pages showing the structure of
- _/_e_t_c_/_p_a_s_s_w_d on systems uusseerriixx and nneewwOOSS in that order. A
- manual page would _n_o_t be displayed about the local systems
- conventions. Please read the relevant man_db utility's man-
- ual page for further and more specific information.
-
- 33..44.. NNLLSS mmaannuuaall ppaaggeess
-
- NLS manual pages should be put in NLS subdirectories of a
- standard manual page hierarchy. A table illustrating the
- concept is reproduced from the "Linux Filesystem Structure"6
- (FFSSSSTTNNDD) manual from which further information may be
- obtained.
-
-
- +---------+----------------+-----------------+----------------------+
- |Language | Territory | Character Set | Directory |
- +---------+----------------+-----------------+----------------------+
- |English | -- | ASCII | /usr/man/en |
- |English | United Kingdom | ASCII | /usr/man/en_GB |
- |English | United States | ASCII | /usr/man/en_US |
- |French | Canada | ISO 8859-1 | /usr/man/fr_CA |
- |French | France | ISO 8859-1 | /usr/man/fr_FR |
- |German | Germany | ISO 646 | /usr/man/de_DE.646 |
- |German | Germany | ISO 6937 | /usr/man/de_DE.6937 |
- |German | Germany | ISO 8859-1 | /usr/man/de_DE.88591 |
- |German | Switzerland | ISO 646 | /usr/man/de_CH.646 |
- |Japanese | Japan | JIS | /usr/man/ja_JP.jis |
- |Japanese | Japan | SJIS | /usr/man/ja_JP.sjis |
- |Japanese | Japan | UJIS (or EUC-J) | /usr/man/ja_JP.ujis |
- +---------+----------------+-----------------+----------------------+
-
- Each of these directories are then interpreted as manual
- page hierarchies themselves and may contain the usual sec-
- tion subdirectories. Access to NLS manual pages is achieved
- via use of the sseettllooccaallee(3) function which queries user
- environment variables to determine the current locale.
- Internally to the man_db utilities, this locale string is
- appended to each manpath element and the resultant NLS man-
- path element is searched before the standard manpath ele-
- ment. In this way, an NLS manual page that matches the
- search criteria will be shown before or in place of the
- standard American English page.
-
- If a user's $MMAANNPPAATTHH consists of or is determined as
-
- _/_u_s_r_/_l_o_c_a_l_/_m_a_n_:_/_u_s_r_/_m_a_n_:_/_u_s_r_/_X_1_1_R_6_/_m_a_n
-
- ____________________
- 6 written and maintained by Daniel Quinlan <quin-
- lan@yggdrasil.com>
-
-
-
-
- 99
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- and their locale is set to ddee__DDEE, the command
- ________________________________
- |_m_a_n__-_-_s_y_s_t_e_m__u_s_e_r_i_x_:_m_a_n__f_o_o_b_a_r_|_
-
- would produce the following internal man_db manpath elements
-
- _/_u_s_r_/_l_o_c_a_l_/_m_a_n_/_u_s_e_r_i_x_/_d_e___D_E
- _/_u_s_r_/_l_o_c_a_l_/_m_a_n_/_u_s_e_r_i_x
- _/_u_s_r_/_m_a_n_/_u_s_e_r_i_x_/_d_e___D_E
- _/_u_s_r_/_m_a_n_/_u_s_e_r_i_x
- _/_u_s_r_/_X_1_1_R_6_/_m_a_n_/_u_s_e_r_i_x_/_d_e___D_E
- _/_u_s_r_/_X_1_1_R_6_/_m_a_n_/_u_s_e_r_i_x
- _/_u_s_r_/_l_o_c_a_l_/_m_a_n_/_d_e___D_E
- _/_u_s_r_/_l_o_c_a_l_/_m_a_n
- _/_u_s_r_/_m_a_n_/_d_e___D_E
- _/_u_s_r_/_m_a_n_/_m_a_n
- _/_u_s_r_/_X_1_1_R_6_/_m_a_n_/_d_e___D_E
- _/_u_s_r_/_X_1_1_R_6_/_m_a_n
-
- ffoooobbaarr would be searched for in the order of manual page
- hierarchies listed.
-
- 33..44..11.. IISSOO 88885599--11 ((llaattiinn11)) mmaannuuaall ppaaggeess
-
- By default NNRROOFFFF will format manual pages into a form suit-
- able for a typewriter style device, e.g. a terminal screen.
- GGNNUU NNRROOFFFF is capable7 of formatting ROFF into a form suit-
- able for 8-bit latin1 capable output devices. To enable out-
- put for such a device, give the option
-
- --with-device=DEVICE
-
- to ccoonnffiigguurree where DEVICE is the suitable and supported out-
- put format, in this case llaattiinn11.
-
- 33..44..22.. DDiissppllaayyiinngg llaattiinn11 cchhaarraacctteerrss oonn aa LLiinnuuxx vviirrttuuaall
- tteerrmmiinnaall
-
- To enable console based viewing of latin1 characters on a
- Linux system, you must have the kbd8 package installed. The
- following commands included within an initialisation file
- such as _/_e_t_c_/_r_c_._d_/_r_c_._l_o_c_a_l will enable the display of latin1
- fonts on the first 5 virtual terminals.
-
- ---< part of /etc/rc.d/rc.local >---
- ____________________
- 7 see nnrrooffff(5) for the output device formats available
- with your NNRROOFFFF
- 8 written and maintained by Andries Brouwer <aeb@cwi.nl>.
- Version 0.90 and above does not require the use of mmaappssccrrnn
- as illustrated in the script.
-
-
-
-
- 1100
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- # sort out the vt font
- if [ -x /bin/setfont ]; then
- /bin/setfont /etc/kbd/consolefonts/lat1-16.psf
- fi
-
- # load the keymap transformation to do when activating new font
- if [ -x /bin/mapscrn ]; then
- /bin/mapscrn /etc/kbd/consoletrans/trivial
- fi
-
- # enable new font
- for t in 1 2 3 4 5; do
- echo -n -e "\033(K" > /dev/tty$t
- done
- ---< part of /etc/rc.d/rc.local >---
-
- For display under the "X Window System", a suitable 8 bit
- clean terminal emulator is required.
-
- 33..44..33.. VViieewwiinngg AASSCCIIII ppaaggeess ffoorrmmaatttteedd ffoorr llaattiinn11 oouuttppuutt
- ddeevviiccee
-
- When formatting an ASCII manual page for a latin1 output
- device, GGNNUU NNRROOFFFF will take advantage of the extra charac-
- ters available and will always produce a text page contain-
- ing some latin1 (8-bit) symbols. The table9 below, taken
- from mmaann(1) illustrates the differences.
-
-
- +--------------------+-------+------------+-------+
- |Description | Octal | ISO 8859-1 | ASCII |
- +--------------------+-------+------------+-------+
- |continuation hyphen | 255 | - | - |
- |bullet (middle dot) | 267 | +o | o |
- |acute accent | 264 | ' | ' |
- |multiplication sign | 327 | x | x |
- +--------------------+-------+------------+-------+
-
- To display such symbols on a 7 bit terminal or terminal emu-
- lator, they must be translated back into standard ASCII. The
- --77 option with mmaann will enable this simple reverse transla-
- tion.
-
- This option may be useful if your site has both 7 and 8-bit
- capable output devices and nroff is using the latin1 output
- device to format manual pages.
-
- ____________________
- 9 The ISO 8859-1 and ASCII columns of this table will be
- identical if this manual was formatted for an ASCII based
- typewriter display, i.e. using NNRROOFFFF in it's native mode.
-
-
-
-
- 1111
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 33..55.. CCaatt ppaaggeess
-
- It has become standard practice to store the formatted man-
- ual pages on disk so that subsequent requests for the manual
- page do not have to involve the formatting process. These
- pre-formatted manual pages are known as _c_a_t pages. Although
- cat pages require additional disk storage requirements, they
- provide a substantial speed increase and their use is recom-
- mended.
-
- The automatic support of storing and using cat pages is
- brought about by simply creating suitable directories for
- them.
-
- 33..66.. CCaatt ppaaggee hhiieerraarrcchhiieess
-
- Traditionally, cat pages were stored under the same manual
- hierarchy as their source manual pages, in _c_a_t_<_s_e_c_> subdi-
- rectories rather than _m_a_n_<_s_e_c_>. This situation is rather
- limiting in several situations
-
- +o When it is advantageous to mount _/_u_s_r as a read-only
- filesystem. Cat pages cannot be supported in this situa-
- tion without use of symbolic links to various other areas
- of the filesystem. This situation is a greater problem if
- the media itself is read-only, such as CD-ROM.
- +o When NFS mounting alternate OS's manual page hierarchies.
- The alternate system may be under someone else's control
- and they may not want cat pages stored on their system.
- In fact it is usually a good idea to export the manual
- page filesystems read-only, or import them that way. It
- is possible to avoid the problems, this time with even
- more symbolic links that may need periodic updating.
- +o If there is a mixture of normal cat files and stray
- cats10, it is very difficult to periodically _t_r_i_m the cat
- space disk usage by removing seldom accessed cat files.
-
- To avoid all of these problems simultaneously, it was
- decided to support local cat page directory caches.
-
- 33..77.. LLooccaall ccaatt ppaaggee ddiirreeccttoorryy ccaacchheess
-
- Any location for cat page hierarchy may be specified in the
- man_db configuration file. The location of the database
- cache associated with each manual page hierarchy will always
- be at the root of the cat page hierarchy. By default, the
- cat page hierarchy shadows the manual page hierarchy. The
- FFSSSSTTNNDD proposes _/_v_a_r_/_c_a_t_m_a_n as the location for such
- ____________________
- 10 cat files that have no source manual page, i.e. they
- cannot be recreated.
-
-
-
-
- 1122
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- directories although man_db-2.3.x allows any directory hier-
- archy to be used. The FFSSSSTTNNDD path transformation rule is as
- follows
-
- _/_u_s_r_/_<_h_i_e_r_a_r_c_h_y_>_/_m_a_n_/_<_l_o_c_a_l_e_>_/_m_a_n_<_s_e_c_>_/_p_a_g_e_._<_s_e_c_>_<_e_x_t_>
-
- should be formatted into the cat file
-
- _/_v_a_r_/_c_a_t_m_a_n_/_<_h_i_e_r_a_r_c_h_y_>_/_<_l_o_c_a_l_e_>_/_c_a_t_<_s_e_c_>_/_p_a_g_e_._<_s_e_c_>_<_e_x_t_>
-
- where the _<_l_o_c_a_l_e_> directory component may be missing and
- _<_e_x_t_> may be an empty string.
-
- The suggestion is that stray cats are located in the tradi-
- tional hierarchy under _/_u_s_r whereas re-creatable cat pages
- are stored under the local writable hierarchy _/_v_a_r_/_c_a_t_m_a_n_.
- mmaann follows strict rules in determining which file is dis-
- played.
-
- As an example, the following route is taken if all three
- files exist.
-
- (1) Check relative time stamps of the manual file and the
- traditional cat file. If the cat file is up to date
- (has a more recent time stamp), display it.
-
- (2) The traditional cat file is out of date. Check rela-
- tive time stamps of the manual file and the alternate
- cat file. If the cat file is up to date, display it.
-
- (3) The alternate cat file is out of date. Format the
- manual file and display the result in the foreground,
- while updating the alternate cat file in the back-
- ground.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1133
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 44.. CCoommpprreessssiioonn
-
- 44..11.. CCoommpprreesssseedd mmaannuuaall ppaaggeess
-
- It is possible to maintain a system of compressed manual
- pages. The use of this feature is not recommended for sys-
- tems that have adequate disk space to store their manual
- pages uncompressed. Subsequent decompression of these manual
- pages will cause several bottlenecks in the formatting pro-
- cess.
-
- Presently, the compression extension/decompressor pairs must
- be known at compile time although any number may be defined
- and used. The following structure is predefined in
- man_db-2.3.x
-
-
- +----------+--------------+
- |Extension | Decompressor |
- +----------+--------------+
- |gz | gzip -dc |
- |z | gzip -dc |
- |Z | compress -dc |
- +----------+--------------+
-
- It is a relatively easy operation to include further pairs
- in this structure. See _i_n_c_l_u_d_e_/_c_o_m_p___s_r_c_._h for details and an
- example.
-
- Support for compressed manual pages is compiled into the
- man_db-2.3.x utilities by default. To completely disable
- this support, edit _i_n_c_l_u_d_e_/_c_o_n_f_i_g_._h and comment out the fol-
- lowing line
-
- #define COMP_SRC 1
-
- This will enable a minor speed increase, but note that sup-
- port for stray cats with any compression extension other
- than the default will also be disabled.
-
- 44..22.. CCoommpprreesssseedd ccaatt ppaaggeess
-
- man_db-2.3.x compresses cat files by default. During config-
- uration, ccoonnffiigguurree will try to find ggzziipp and if so, all cat
- files produced by mmaann will be compressed with
-
- ggzziipp --77cc
-
- and have a ..ggzz extension appended. If ggzziipp is not found,
-
- ccoommpprreessss --cc
-
-
-
-
- 1144
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- is used as the compressor and the extension ..ZZ is appended.
-
- To store cat files in an uncompressed state and to disable
- compressed extension processing completely, edit
- _i_n_c_l_u_d_e_/_c_o_n_f_i_g_._h and comment out the following line
-
- #define COMP_CAT 1
-
- 44..22..11.. SSttrraayy ccaattss
-
- Normally, mmaann will only look for cat files with the default
- compression extension. The default compression extension is
- dependent on the default compressor and may be an empty
- string if the support for compressed cats is disabled.
-
- It is possible for a system to be supplied with stray cat
- files located in the traditional cat page hierarchy. To make
- matters worse, they may have compression extensions other
- than the default and reside on read-only media. In such
- circumstances, stray cat files will be accepted with any
- compression extension that is also supported for manual
- pages.
-
- This special treatment of stray cat pages is removed if sup-
- port for compressed manual pages is turned off or not avail-
- able.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1155
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 55.. FFoorrmmaattttiinngg
-
- As already pointed out in the introduction, there are two
- primary formatters common to UUNNIIXX: NNRROOFFFF and TTRROOFFFF.
-
- In the following sections, I will use the term TTRROOFFFF to
- describe the typesetter formatter and NNRROOFFFF to describe the
- typewriter formatter. The term ROFF will be used to describe
- a generic formatter.
-
- 55..11.. GGRROOFFFF
-
- If using the GGRROOFFFF package, there is a further choice, GGRROOFFFF
- itself. Essentially, GGRROOFFFF forms a pipeline of processors
- including TTRROOFFFF and an output processor which translates the
- ditroff produced by TTRROOFFFF into the appropriate output for-
- mat. The default output format, or device, for GGRROOFFFF is
- PostScript. Anything else must be specified using the
- device argument. To illustrate GGRROOFFFF, the command
- _______________________
- |_g_r_o_f_f__-_T_d_v_i__/_d_e_v_/_n_u_l_l_|_
-
- will form the following pipeline
-
- troff -Tdvi /dev/null | grodvi
-
- If GGRROOFFFF is tied to mmaann''ss --TT option, it is still possible
- for mmaann to produce ditroff via use of the --ZZ option.
-
- In GGRROOFFFF 1.09, NNRROOFFFF is bundled as a shell script that calls
- GGRROOFFFF, which in turn calls TTRROOFFFF with the default options
- --WWaallll --mmttttyy--cchhaarr --TTaasscciiii, passing the result through ggrroottttyy
- before it finally reaches the screen.
-
- It is imperative that the script does not pass pre-
- processing options to GGRROOFFFF command line as mmaann takes care
- of this separately. The file _t_o_o_l_s_/_n_r_o_f_f___s_c_r_i_p_t may be used
- as a basis for an NNRROOFFFF script if your system is without
- one.
-
- 55..22.. DDeevviicceess
-
- Both NNRROOFFFF and GGRROOFFFF may allow output device selection. As
- mentioned previously, classic NNRROOFFFF produces output suitable
- for a typewriter device, classic TTRROOFFFF produces output suit-
- able for a CC//AA//TT and GGRROOFFFF produces output suitable for a
- PostScript interpreting device.
-
- 55..33.. MMaaccrrooss
-
- There are several ROFF macros in existence that are suitable
- for manual pages. Unfortunately, they tend to be incompati-
- ble with each other.
-
-
- 1166
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- During configuration, ccoonnffiigguurree will attempt to determine a
- suitable macro for the local system's manual page collec-
- tion. It attempts to use NNRROOFFFF with the following three
- macro packages:
-
-
- +--------------+----------------+---------------+
- |macro package | macro filename | nroff command |
- +--------------+----------------+---------------+
- |andoc | tmac.andoc | nroff -mandoc |
- |an | tmac.an | nroff -man |
- |doc | tmac.doc | nroff -mdoc |
- +--------------+----------------+---------------+
-
- The first that succeeds is used. Macro aannddoocc is suitable for
- manual pages written using either aann or ddoocc macro commands,
- but not both.
-
- 55..44.. PPrree--ffoorrmmaatt pprroocceessssoorrss ((pprree--pprroocceessssoorrss))
-
- Manual pages may require pre-processing by any of the fol-
- lowing
-
-
- +--------+----+------------------+
- |Program | ID | Pre-processes |
- +--------+----+------------------+
- |eqn | e | equations |
- |tbl | t | tables |
- |grap | g | graphs |
- |pic | p | pictures |
- |refer | r | A bibliography |
- |vgrind | v | program listings |
- +--------+----+------------------+
-
- It is possible to assign a default pre-processor list that
- all manual pages will be passed through prior to the primary
- formatter. By default, this is empty. To define a default
- list, edit _i_n_c_l_u_d_e_/_m_a_n_c_o_n_f_i_g_._h and un-comment the following
- line
-
- /* #define DEFAULT_MANROFFSEQ "t" */
-
- which will enable ttbbll processing by default. To change the
- list, replace the tt with a suitable string of processor
- ID's.
-
- Pre-process options may be provided at run time in various
- forms, but in general the pre-processors required by each
- manual page is indicated in the first line of the manual
- page itself. See mmaann(1) for details.
-
-
-
-
- 1177
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 55..55.. FFoorrmmaatt ssccrriippttss
-
- It is very likely that alternate systems manual pages may
- require non-standard macro packages or possibly even special
- pre-processors. To tackle such problems, special format
- scripts may be created on a per manual hierarchy basis.
-
- If the file
-
- _<_m_a_n_u_a_l___h_i_e_r_a_r_c_h_y_>_/_m_a_n_d_b___n_f_m_t
-
- exists and is executable, it is expected to be able to cor-
- rectly format a manual page originating from _<_m_a_n_-
- _u_a_l___h_i_e_r_a_r_c_h_y_> to its standard output. It will be supplied
- with either two or three arguments:
-
- +o manual page filename
- +o pre-processor string
- +o ouput device (optional)
-
- Similarly, if the option --TT_<_d_e_v_i_c_e_> or --tt was supplied to
- mmaann and the file
-
- _<_m_a_n_u_a_l___h_i_e_r_a_r_c_h_y_>_/_m_a_n_d_b___t_f_m_t
-
- exists and is executable, it will be used in the same way.
-
- An example of such a script, supplied by Markus Armbruster
- <armbru@pond.sub.org>, who provided support for external
- formatter scripts, can be found as _t_o_o_l_s_/_m_a_n_d_b___[_n_t_]_f_m_t
-
- The script can be used as both a NNRROOFFFF and TTRROOFFFF/GGRROOFFFF for-
- mat script and can be installed as _m_a_n_d_b___n_f_m_t and hard
- linked to _m_a_n_d_b___t_f_m_t after modification appropriate for your
- particular site.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1188
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 66.. TThhee iinnddeexx ddaattaabbaassee ccaacchheess
-
- As mentioned in the introduction, man_db-2.3.x uses database
- lookups to search for manual page locations and information.
- When performing a manual page lookup or a basic wwhhaattiiss
- search, the databases are searched in
-
- _k_e_y _-_> _c_o_n_t_e_n_t
-
- mode and are as fast as the underlying databases can be.
- When performing aapprrooppooss or special wwhhaattiiss searches, the
- databases are searched in a linear way, which although far
- more expensive than _k_e_y_e_d lookup, is no worse than tradi-
- tional text based file searching.
-
- 66..11.. iinnddeexx ddaattaabbaassee llooccaattiioonn
-
- The databases are always located at the root of the cat page
- hierarchy, whether this is the same as the manual page hier-
- archy or not. As file locking mechanisms are employed to
- ensure that concurrent processes do not update a database
- simultaneously, it is almost imperative that the databases
- reside on a local filesystem since file locking across NFS
- filesystems may be unavailable or flaky. To avoid such prob-
- lems, mmaann can be compiled without database maintenance sup-
- port. See the section titled "Modes of operation" for
- details.
-
- 66..11..11.. MMaannuuaall hhiieerraarrcchhiieess wwiitthh nnoo iinnddeexx ddaattaabbaassee
-
- It is possible for the man_db-2.3.x utilities to operate
- without aid from an index database. Under such circum-
- stances, search methods will resort to file globbing and
- whatis type searches are performed on any traditional whatis
- text databases that may exist. Only the traditional cat
- hierarchy is searched for cat files.
-
- 66..11..22.. UUsseerr mmaannuuaall ppaaggee hhiieerraarrcchhiieess
-
- A user may have any number of personal manual page hierar-
- chies listed in their $MMAANNPPAATTHH. By default, mmaann will main-
- tain mmaannddbb created databases at the root of user manual page
- hierarchies. The definition of a user manual hierarchy is
- that it does not have an entry in the man_db configuration
- file. See mmaannppaatthh(5) for details.
-
- 66..22.. CCoonntteennttss ooff aann iinnddeexx ddaattaabbaassee
-
- There are four kinds of entry in an index database.
-
- (1) A direct entry regarding a particular manual page.
- Manual pages that are unique in terms of name use
- just a single entry in the database and can be looked
-
-
- 1199
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- up by simply using the name as the key.
-
- (2) A common name index entry that lists the extensions
- of all of the manual pages sharing the common index
- entry name. Manual pages that share common names,
- but have differing extensions each have a single
- database entry, but this time they are looked up with
- a key comprised of their name and their extension.
- The entire set of common named pages also has an com-
- mon name index entry that informs of the extensions
- available.
-
- (3) An indirect entry that has a pointer to the real
- entry. Manual pages that are whatis references to a
- particular page do not physically exist so they have
- a pointer to the entry containing the location of the
- real manual page.
-
- (4) Special identification entries. There are two special
- key names, "$mtime$" that references an integer
- describing the last modification time of the database
- and "$version$" that identifies the database storage
- scheme version.
-
- In the following entries, the character "|" will be used to
- separate the fields. In reality a tab is used. Direct and
- indirect entries takes the form:
-
- _<_n_a_m_e_> _-_>
- _<_e_x_t_>_|_<_s_e_c_>_|_<_m_t_i_m_e_>_|_<_I_D_>_|_<_r_e_f_>_|_<_c_o_m_p_>_|_<_w_h_a_t_i_s_>
-
- Common name index entries take the form:
-
- _<_n_a_m_e_> _-_> _|_<_e_x_t_1_>_|_<_e_x_t_2_>_|_<_e_x_t_3_>_| _._._. _<_e_x_t_n_>
-
- and common name direct or indirect entries take the form:
-
- _<_n_a_m_e_>_|_<_e_x_t_> _-_>
- _<_e_x_t_>_|_<_s_e_c_>_|_<_m_t_i_m_e_>_|_<_I_D_>_|_<_r_e_f_>_|_<_c_o_m_p_>_|_<_w_h_a_t_i_s_>
-
- where in each case the filename being represented is formed
- as
-
- _<_m_a_n_u_a_l___h_i_e_r_a_r_c_h_y_>_/_m_a_n_<_s_e_c_>_/_<_n_a_m_e_>_._<_e_x_t_>_._<_c_o_m_p_>
-
- in the case of a manual page, or
-
- _<_c_a_t___h_i_e_r_a_r_c_h_y_>_/_c_a_t_<_s_e_c_>_/_<_n_a_m_e_>_._<_e_x_t_>_._<_c_o_m_p_>
-
- in the case of a stray cat.
-
- If any of the fields would be empty, a single "-" is stored
- in its place. _<_c_o_m_p_> represents the compression extension.
-
-
- 2200
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- _<_m_t_i_m_e_> is an integer representing the last modification
- time of the manual page, _<_r_e_f_> points to the entry contain-
- ing the location of the real page and _<_I_D_> is one of the
- following identification letters.
-
-
- +---+------------+--------------------------------------------------------+
- |ID | #define | Description |
- +---+------------+--------------------------------------------------------+
- |A | ULT_MAN | ultimate manual page, the full source nroff file |
- |B | SO_MAN | manual page containing a .so request to an ULT_MAN |
- |C | WHATIS_MAN | virtual whatis referenced page pointing to an ULT_MAN |
- |D | STRAY_CAT | cat page with no source manual page |
- |E | WHATIS_CAT | virtual whatis referenced page pointing to a STRAY_CAT |
- +---+------------+--------------------------------------------------------+
-
- The _I_D illustrates the precedence. Some types of manual page
- can be referenced by several means, e.g. .so requested and
- whatis referred. In such a case, only one reference must be
- stored in the database, the precedence level decides which.
-
- 66..22..11.. FFaavvoouurriinngg ssttrraayy ccaattss
-
- With the above rules of precedence, it is possible for a
- valid stray cat page to be replaced by a whatis referred
- page sharing identical name-space.
-
- If you would like to see the stray cat page kkiillll(1) instead
- of the bbaasshh__bbuuiillttiinnss(1) page referenced by kkiillll(1) edit
- _l_i_b_d_b_/_d_b___s_t_o_r_a_g_e_._h and un-comment the following line
-
- /* #define FAVOUR_STRAYCATS */
-
- 66..22..22.. AAcccceessssddbb
-
- A simple program, aacccceessssddbb is included with man_db-2.3.x. It
- will output the data contained within a man_db database in a
- human readable form. By default, it will _d_u_m_p the data from
- _/_v_a_r_/_c_a_t_m_a_n_/_i_n_d_e_x_._<_d_b_-_t_y_p_e_>, where _<_d_b_-_t_y_p_e_> is dependent on
- the database library in use.
-
- Supplying an argument to aacccceessssddbb will override this
- default. Tabs are replaced in the output by a tilde "~" in
- the _k_e_y field and a single space in the _c_o_n_t_e_n_t field
-
- aacccceessssddbb is not compiled by default. Type
- _______________
- |_m_a_k_e__a_c_c_e_s_s_d_b_|_
-
- in the src directory to compile it.
-
-
-
-
-
- 2211
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 66..22..33.. EExxaammppllee ddaattaabbaassee
-
- As an example of both aacccceessssddbb and the database storage
- method, the output of
- ___________________________
- |_s_r_c_/_a_c_c_e_s_s_d_b__m_a_n_/_i_n_d_e_x_._b_t_|_
-
- after first running
- _______________
- |_s_r_c_/_m_a_n_d_b__m_a_n_|_
-
- from the top level build directory is included below.
-
- $mtime$ -> "795987034"
- $version$ -> "2.3.1"
- apropos -> "1 1 795981542 A - - search the manual page names and descriptions"
- catman -> "8 8 795981544 A - - create or update the pre-formatted manual pages"
- man -> "1 1 795981542 A - - an interface to the on-line reference manuals"
- mandb -> "8 8 795981544 A - - create or update the manual page index caches"
- manpath -> " 1 5"
- manpath~1 -> "1 1 795981542 A - - determine search path for manual pages"
- manpath~5 -> "5 5 795981543 A - - format of the /etc/man_db.config file"
- whatis -> "1 1 795981543 A - - search the manual page names"
- zsoelim -> "1 1 795981543 A - - satisfy .so requests in roff input"
-
- 66..33.. DDaattaabbaassee ttyyppeess
-
- man_db-2.3.x has support for various low level database
- libraries commonly in use today. The interfaces to the
- libraries are known as
-
- +o ndbm (UUNNIIXX)
- +o gdbm (GGNNUU)
- +o btree (Berkeley DB)
-
- man_db-2.3.x currently does not hold more than one database
- open at any time, so
-
- +o dbm (UUNNIIXX)
-
- support could be added in the future.
-
- 66..44.. lliimmiittaattiioonnss
-
- The general differences and limitations are best compared in
- a table.
-
-
-
-
-
-
-
-
-
- 2222
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- +------+-------------+----------+-----------------+--------------+-----------+
- | | | File | Content memory | Concurrent | |
- |Name | Type | +---------+-------+ | Shareable |
- | | | name | type | limit | access | |
- +------+-------------+----------+---------+-------+--------------+-----------+
- |ndbm | hash | index11 | static | 1Kb | none | no |
- |gdbm | hash | index.db | dynamic | - | file locking | no |
- |btree | binary tree | index.bt | static | - | none | yes |
- +------+-------------+----------+---------+-------+--------------+-----------+
-
- Those types that have no built in concurrent access strat-
- egy, are provided with fflloocckk(2) based file locking by
- man_db-2.3.x.
-
- As bbttrreeee is noticeably faster when doing mmaann searches,
- mainly due to the fast initialization of the databases, it
- is the preferred library interface. ccoonnffiigguurree will look for
- bbttrreeee, ggddbbmm and then finally nnddbbmm routines when configuring
- man_db-2.3.x.
-
- 66..55.. SShhaarriinngg ddaattaabbaasseess iinn aa hheetteerrooggeenneeoouuss eennvviirroonnmmeenntt
- It may be necessary or advantageous to share databases
- across platforms, regardless of the potential file locking
- problems.
-
- An example would be a user having a personal manual page
- hierarchy in an NFS based home directory environment,
- whereby the home directory is held on and mounted from a
- single machine in a heterogeneous network.
-
- In this context, the database cache will have the same name
- and reside in the same place on all machines. There are at
- least two ways to deal with this problem.
-
- +o Hack the _i_n_c_l_u_d_e_/_m_a_n_c_o_n_f_i_g_._h file on each platform to
- provide a unique database name for each system. No
- databases will be shared.
- +o Install and use the Berkeley DB database interface
- library on each platform. These databases can be shared
- across big-endian/little-endian platforms although a
- database created on a big-endian platform will suffer a
- small access penalty when used by a litle-endian machine
- and vice-versa.
-
-
-
-
- ____________________
- 11 ndbm databases are physically represented by two
- files: _i_n_d_e_x_._d_i_r and _i_n_d_e_x_._p_a_g but are referred to simply as
- _i_n_d_e_x by the interface routines.
-
-
-
-
- 2233
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- 77.. MMiisscceellllaanneeoouuss
-
- 77..11.. MMooddeess ooff ooppeerraattiioonn
-
- The man_db utilities can operate in many different modes,
- allowing varying degrees of freedom, functionality and secu-
- rity. No mode requires that the manual page hierarchies be
- writable.
-
- (1) Default mode
- mmaann is setuid to the user MAN_OWNER which is `man' by
- default and is changeable via options to ccoonnffiigguurree.
- mmaannddbb, if run by the superuser or MAN_OWNER, creates
- globally accessible index databases owned by MAN_OWNER.
- Once the databases are created, mmaann will update entries
- in them if it finds newly installed manual pages or
- delete entries if manual pages are removed. In this
- mode it is possible for a malicious mmaann user to delib-
- erately lock a database as a writer, thus denying read
- access to other users.
- If cat directories exist and have the correct permis-
- sions, mmaann will take care of producing cat files.
- These will be owned by MAN_OWNER. The default permis-
- sions of both cat files and databases is 0644.
-
- (2) No man database updates
- This mode also requires mmaann to be setuid, but is
- favoured where databases must be shared in an environ-
- ment unfriendly to kernel locking procedures, eg. NFS.
- It also prevents possible `denial of service' attacks
- by malicious mmaann users as mmaann never opens the databases
- as a writer in this mode. To replace the functionality
- lost by disallowing mmaann write access to the databases,
- mmaannddbb must be rerun whenever new manual pages are
- installed. Failure to do so will result in mmaann being
- unable to find and display the newly added manual
- pages. As mmaannddbb lacks the ability to delete database
- entries for manual pages that have been removed, it is
- necessary to use the ----ccrreeaattee flag whenever manual
- pages are removed from the filesystem. Each index
- database may be owned by an arbitrary user who will
- have subsequent write access to the database. Cat
- files are created in the same way as for mode (1)
- above.
- To use the man_db utilities in this mode, edit
- _i_n_c_l_u_d_e_/_m_a_n_c_o_n_f_i_g_._h and comment out `#define
- MAN_DB_UPDATES'
-
- (3) No man database updates or cat production
- mmaann is installed not setuid. This mode of operation
- probably offers the highest level of security but it
- requires higher levels of maintenance than other modes
- due to the restrictions imposed upon mmaann. Each
-
-
- 2244
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- database is owned by an arbitrary user as in mode (2).
- Each cat hierarchy is also owned by an arbitrary user
- who is responsible for creating cat files using ccaattmmaann
- whenever new manual files are installed. mmaann will be
- completely passive in it's action, ie. no index
- databases will be written to and no cat files are ever
- produced.
- To use the man_db utilities in this mode, supply the
- option `--disable-setuid' to ccoonnffiigguurree and edit
- _i_n_c_l_u_d_e_/_m_a_n_c_o_n_f_i_g_._h, commenting out `#define
- MAN_DB_UPDATES' and `#define MAN_CATS' after running
- ccoonnffiigguurree.
-
- (4) Wide open
- mmaann is installed not setuid. This mode is similar in
- operation to the majority of vendor supplied, non
- setuid, cat file supporting manual pager suites. It is
- not recommended. The databases are owned by an arbi-
- trary user who maintains them using mmaannddbb. mmaann does
- not update the databases. Cat files are produced and
- stored in world writable cat directories and have world
- write access themselves.
- To use the man_db utilities in this mode, supply the
- option `--disable-setuid' to ccoonnffiigguurree, edit
- _i_n_c_l_u_d_e_/_m_a_n_c_o_n_f_i_g_._h and comment out `#define
- MAN_DB_UPDATES' and change the definition of CATMODE
- from 0644 to 0666.
-
- Other variations can also be used. In fact it is possible
- for mmaann to actually create index databases, usually the job
- of mmaannddbb, for users private manual page hierarchies. This is
- enabled by editing _i_n_c_l_u_d_e_/_m_a_n_c_o_n_f_i_g_._h and un-commenting the
- `/* #define MAN_DB_CREATES */' line. man_db-2.2 operated in
- this manner.
-
- In summary, _i_n_c_l_u_d_e_/_m_a_n_c_o_n_f_i_g_._h contains definitions for
-
- +o MAN_DB_CREATES
- +o MAN_DB_UPDATES
- +o MAN_CATS
- +o CATMODE
- +o DBMODE
-
- and the setuid installation and operation of mmaann is modified
- by supplying either of the following options to ccoonnffiigguurree:
-
- +o --enable-setuid=USER
- +o --disable-setuid
-
- 77..22.. NNLLSS mmeessssaaggee ccaattaalloogguueess
-
- man_db-2.3.x has built in support for native language mes-
- sage catalogues. That is, it can issue messages in the
-
-
- 2255
-
-
-
-
-
-
-
- mmaann__ddbb--22..33..xx mmaannuuaall vv00..55 AApprriill 1188,, 11999955
-
-
- locale of the users choice. This will only occur if the
- locale's translation has been written. Before undertaking a
- translation, please contact the author who will be maintain-
- ing a list of such activity.
-
- Currently, the following translations exist
-
- +o *none*
-
- 77..33.. CCrreeddiittss
-
- I would like to thank the following people for their time,
- effort, support, ideas and code which went into man_db-2.3.x
-
- Markus Armbruster <armbru@pond.sub.org>
- Caleb Epstein <epstein_caleb@jpmorgan.com>
- Zoltan Hidvegi <hzoli@cs.elte.hu>
- Nils Magnus <magnus@unix-ag.uni-kl.de>
- Daniel Quinlan <quinlan@yggdrasil.com>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2266
-
-
-
-
-
-
-
-
-
-
- Glossary
-
-
- manual page
- A file containing descriptions related to the use of a
- function or program or the structure of a file. The
- name of the file is formed from the title of the manual
- page followed by a period followed by the name of the
- section that it resides in, optionally followed by an
- extension. The format of the file is NNRROOFFFF and may be
- compressed, having a suitable compression extension
- appended.
-
- cat page
- A formatted manual page suitable for viewing in a ter-
- minal.
-
- stray cat page
- A cat page that does not have a relative manual page on
- the system, ie. only the cat page was supplied or the
- manual page was removed after the cat page had been
- created.
-
- section
- Each manual page or cat page hierarchy is divided into
- sections, each section having it's own directory. man-
- ual page hierarchy section names begin with `man' and
- cat page sections with `cat'.
-
- extension
- A package may provide manual pages with filenames end-
- ing in a package-specific extension name. This allows
- manual pages with the same title to coexist in the same
- manual page hierarchy and section without sharing the
- same filename. It also provides a further mechanism
- for man to select the correct manual page.
-
- manual page hierarchy
- A directory tree divided into manual page sections,
- each containing a collection of manual pages.
-
- cat page hierarchy
- A directory tree divided into cat page sections, each
- containing a collection of cat pages.
-
- traditional cat page hierarchy
- The same location as the manual page hierarchy.
-
- alternate cat page hierarchy
- A separate location to that of the traditional cat page
- hierarchy.
-
-
-
-
- ii
-
-
-
-
-
-
-
-
-
-
- traditional cat page
- A cat page located in a traditional cat page hierarchy.
-
- alternate cat page
- A cat page located in an alternate cat page hierarchy.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- iiii
-
-
-
-
-
-
-
-
-
-
- Contents
-
-
- 1. Introduction ...................................... 1
- 1.1 man_db-2.3.x ................................. 1
- 1.1.1 The concept ........................... 1
- 1.2 The manual page system ....................... 2
- 1.3 Sections of the manual ....................... 3
- 1.4 The format of manual pages ................... 3
- 1.5 Arguments to configure ....................... 4
-
- 2. The specifics of Sections ......................... 5
- 2.1 Package specific manual page sections ........ 5
- 2.2 Selecting a section type ..................... 5
- 2.2.1 Specifying a section .................. 5
- 2.2.2 Specifying an extension ............... 6
-
- 3. Filesystem structure .............................. 7
- 3.1 Manual page hierarchies ...................... 7
- 3.2 Setting the MANPATH .......................... 7
- 3.3 Other OS's manual pages ...................... 8
- 3.4 NLS manual pages ............................. 9
- 3.4.1 ISO 8859-1 (latin1) manual pages ...... 10
- 3.4.2 Displaying latin1 characters on a
- Linux virtual terminal ....................... 10
- 3.4.3 Viewing ASCII pages formatted for
- latin1 output device ......................... 11
- 3.5 Cat pages .................................... 12
- 3.6 Cat page hierarchies ......................... 12
- 3.7 Local cat page directory caches .............. 12
-
- 4. Compression ....................................... 14
- 4.1 Compressed manual pages ...................... 14
- 4.2 Compressed cat pages ......................... 14
- 4.2.1 Stray cats ............................ 15
-
- 5. Formatting ........................................ 16
- 5.1 GGRROOFFFF ........................................ 16
- 5.2 Devices ...................................... 16
- 5.3 Macros ....................................... 16
- 5.4 Pre-format processors (pre-processors) ....... 17
- 5.5 Format scripts ............................... 18
-
- 6. The index database caches ......................... 19
- 6.1 index database location ...................... 19
- 6.1.1 Manual hierarchies with no index
- database ..................................... 19
- 6.1.2 User manual page hierarchies .......... 19
- 6.2 Contents of an index database ................ 19
- 6.2.1 Favouring stray cats .................. 21
- 6.2.2 Accessdb .............................. 21
- 6.2.3 Example database ...................... 22
- 6.3 Database types ............................... 22
-
-
- ii
-
-
-
-
-
-
-
-
-
-
- 6.4 limitations .................................. 22
- 6.5 Sharing databases in a heterogeneous envi-
- ronment ........................................... 23
-
- 7. Miscellaneous ..................................... 24
- 7.1 Modes of operation ........................... 24
- 7.2 NLS message catalogues ....................... 25
- 7.3 Credits ...................................... 26
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- iiii
-
-
-
-